Special Built-in Target Names

Contents|Index|Previous|Next
Special built-in target names

Certain names have special meanings if they appear as targets.

.PHONY

The dependencies of the special target, .PHONY, are considered to be phony targets. When it is time to consider such a target, make will run its commands unconditionally, regardless of whether a file with that name exists or what its last-modification time is. See Phony targets.

.SUFFIXES

The dependencies of the special target, .SUFFIXES, are the list of suffixes to be used in checking for suffix rules. See Old-fashioned suffix rules.

.DEFAULT

The commands specified for .DEFAULT are used for any tar-get for which no rules are found (either explicit rules or im-plicit rules). See Defining last-resort default rules. If .DEFAULT commands are specified, every file mentioned as a dependency, but not as a target in a rule, will have these commands executed on its behalf. See Implicit rule search algorithm.

.PRECIOUS

The targets which .PRECIOUS depends on are given the following special treatment: if make is killed or interrupted during the execution of their commands, the target is not deleted. See Interrupting or killing make. Also, if the target is an intermediate file, it will not be deleted after it is no longer needed, as is normally done. See Chains of implicit rules.

You can also list the target pattern of an implicit rule (such as %.o) as a dependency file of the special target, .PRECIOUS, to preserve intermediate files created by rules whose target patterns match that files name.

.IGNORE

If you specify dependencies for .IGNORE, then make will ignore errors in execution of the commands run for those particular files. The commands for .IGNORE are not meaningful.

If mentioned as a target with no dependencies, .IGNORE says to ignore errors in execution of commands for all files. This usage of .IGNORE is supported only for historical compatibility. Since this affects every command in the makefile, it is not very useful; we recommend you use the more selective ways to ignore errors in specific commands. See Errors in commands.

.SILENT

If you specify dependencies for .SILENT, then make will not the print commands to remake those particular files before executing them. The commands for .SILENT are not meaningful.

If mentioned as a target with no dependencies, .SILENT says not to print any commands before executing them. This usage of .SILENT is supported only for historical compatibility. We recommend you use the more selective ways to silence specific commands. See Command echoing.

If you want to silence all commands for a particular run of make, use the -s or --silent options (see Summary of options).

.EXPORT_ALL_VARIABLES

Simply by being mentioned as a target, this tells make to export all variables to child processes by default.

See Communicating variables to a sub-make.

Any defined implicit rule suffix also counts as a special target if it appears as a target, and so does the concatenation of two suffixes, such as .c.o. These targets are suffix rules, an obsolete way of defining implicit rules (but a way still widely used). In principle, any target name could be special in this way if you break it in two and add both pieces to the suffix list. In practice, suffixes normally begin with ., so these special target names also begin with .. See Old-fashioned suffix rules.

Top|Contents|Index|Previous|Next